
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;


/* Une frame pour expliquer le mode d'emploi au joueur */
public class Aide extends JFrame implements ActionListener
{

/* ATTRIBUTS */
  private JPanel panneau;
  private AudioLabi audio;
  public static boolean TUTORIAL=false;

/* CONSTRUCTEUR */
  public Aide(AudioLabi a)
  {
    super("Mode d'emploi");
    audio=a;
    setSize(this.getToolkit().getScreenSize());
    setResizable(false);
    panneauCreatorAide();
    setContentPane(panneau);
    setFocusable(true);
    addKeyListener(new RaccourcisClavierAide(this));
  }

  private void panneauCreatorAide()
  {
		String ressourcePath = StaticFields.ressourcePath;
    /* On cree un panneau compose de deux lignes et de deux colonnes */
       panneau = new JPanel();
       panneau.setLayout(new GridLayout(4,1));
       JButton boutontemp = null;

       //Bouton Nouveau Jeu, raccourci clavier: F
       boutontemp = new JButton(new ImageIcon(ressourcePath + "images/commandes.gif"));
       boutontemp.getAccessibleContext().setAccessibleDescription("commandes");
       boutontemp.addActionListener(this);
       panneau.add(boutontemp);

       //Bouton Aide, raccourci clavier: ENTER
       boutontemp = new JButton(new ImageIcon(ressourcePath + "images/tutorial.gif"));
       boutontemp.getAccessibleContext().setAccessibleDescription("tutorial");
       boutontemp.addActionListener(this);
       panneau.add(boutontemp);

       //Bouton A Propos, raccourci clavier: J
       boutontemp = new JButton(new ImageIcon(ressourcePath + "images/tatonner.gif"));
       boutontemp.getAccessibleContext().setAccessibleDescription("detecter_murs");
       boutontemp.addActionListener(this);
       panneau.add(boutontemp);

       //Bouton Quitter, raccourci clavier: ESC
       boutontemp = new JButton(new ImageIcon(ressourcePath + "images/retour2.gif"));
       boutontemp.getAccessibleContext().setAccessibleDescription("quitter");
       boutontemp.addActionListener(this);
       panneau.add(boutontemp);

       if(TUTORIAL)
       {
         audio.stop();
         audio.instructionsPlusCourtes();
       }
       else
       {
         audio.stop();
         audio.instructions();
       }
  }

/* METHODES DE TRAITEMENT D'EVENEMENTS */

  /* Identifie le bouton clique et lance la bonne methode en consequence */
  public void actionPerformed(ActionEvent ae)
  {
    JButton source = (JButton) ae.getSource();
    if ( source.getAccessibleContext().getAccessibleDescription().equals("commandes"))
      commandes();
    if ( source.getAccessibleContext().getAccessibleDescription().equals("tutorial"))
      tutorial();
    if ( source.getAccessibleContext().getAccessibleDescription().equals("detecter_murs"))
      comment_detecter_murs();
    if ( source.getAccessibleContext().getAccessibleDescription().equals("quitter"))
      quitterAide();
  }


  /* Pour revenir a la Frame precedente */
  public void quitterAide()
  {
    TUTORIAL=false;
    hide();
    audio.stop();
    audio.bienvenuePlusCourt();
  }

  /* Pour acceder a un tutorial */
  public void tutorial()
  {
    TUTORIAL=true;
    audio.stop();
    hide();
    LabyGraphic lg =new LabyGraphic(audio,7,7,true);
    lg.show();
  }

  public void commandes()
  {
    audio.stop();
    Commandes cmd = new Commandes(audio);
    cmd.show();
  }

  public void comment_detecter_murs()
  {
    audio.stop();
    DetecterMurs dm = new DetecterMurs(audio);
    dm.show();
  }

}

/* Raccourcis claviers pour naviguer */
class RaccourcisClavierAide extends KeyAdapter
{

  private Aide aide;
  private AudioLabi audio;

  public RaccourcisClavierAide(Aide help)
  {
    super();
    aide = help;
  }

  public void keyPressed(KeyEvent ke)
  {
    switch(ke.getKeyCode())
    {
      case KeyEvent.VK_ESCAPE:
        aide.quitterAide();
        break;

      case KeyEvent.VK_ENTER:
        aide.tutorial();
      break;

    case KeyEvent.VK_F:
      aide.commandes();
      break;

    case KeyEvent.VK_J:
      aide.comment_detecter_murs();
    break;


    }
  }
}